package com.smedi.ismedi.progress.core.application.query;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.smedi.ismedi.progress.api.dto.response.ProgressKanBanStatisticResponse;
import com.smedi.ismedi.progress.core.application.command.ProgressKanBanQuery;
import com.smedi.ismedi.progress.core.domain.aggregatemodel.ProcessTask;
import com.smedi.ismedi.progress.core.domain.aggregatemodel.Progress;

import java.util.List;

/**
 * 进度计划查询服务
 *
 * @author liaojiajie
 * @date 2021/09/19
 */
public interface ProgressQueryService {

    /**
     * 获取 进度项目 分页信息
     *
     * @param offset
     * @param pageSize
     * @param projectId
     * @param mainCourtyard
     * @param projectManager
     * @param status
     * @param projectCategory
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.smedi.ismedi.progress.core.domain.aggregatemodel.Progress>
     * @return
     */
    Page<Progress> getProgressPage(Long offset, Long pageSize,Long hrOrganizationId, Integer projectId, String projectManager, Integer mainCourtyard, Integer status, String projectCategory);

    Page<Progress> getProgressPageByApp(Long offset, Long pageSize, Long hrOrganizationId,Integer projectId, String appSearch, Integer progressStatus);

    /**
    * 获取 进度看板 分页信息

    * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.smedi.ismedi.progress.core.domain.aggregatemodel.Progress>
    * @date 2022/9/21 16:30
    */
    Page<Progress> getProgressKanBanPage(ProgressKanBanQuery progressKanBanQuery);

    /**
    * 获取进度看板统计数据
    * @param hrOrganizationId
    * @return com.smedi.ismedi.progress.api.dto.response.ProgressKanBanStatisticResponse
    * @throws
    * @date 2022/9/28 13:33
    */
    ProgressKanBanStatisticResponse getProgressKanStatisticBanPage(Long hrOrganizationId);

    /**
    * 获取滞后项目信息
    * @param hrOrganizationId
    * @return java.util.List<com.smedi.ismedi.progress.core.domain.aggregatemodel.Progress>
    * @throws
    * @date 2022/9/28 13:34
    */
    List<Progress> getProgressKanLagProjectPage(Long hrOrganizationId);

    List<ProcessTask> getProgressScheduleProcess(Long id);
}
